package com.websocket.util;

import java.util.concurrent.ConcurrentHashMap;

import javax.websocket.Session;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class ChatRoomUtil{
	/* 此处键值对为 jsessionId 与 session */
	public static ConcurrentHashMap<String, Session> SESSION_MAP = new ConcurrentHashMap<String, Session>();

	
	
	/**
	 * @author fg
	 * @description 给SESSION_MAP新增一条记录
	 * @date 2017年7月27日
	 */
	public static void addOneSession(Session session) {
		SESSION_MAP.put(session.getId(), session);
	}

	/**
	 * @author fg
	 * @description 移除SESSION_MAP中对应的session
	 * @date 2017年7月27日
	 */
	public static void removeOneSession(Session session) {
		SESSION_MAP.remove(session.getId());
	}

	/**
	 * @author fg
	 * @description 获取当前SESSION_MAP的用户数量（session数量）
	 * @date 2017年7月27日
	 */
	public static Integer getUserNum() {
		return SESSION_MAP.size();
	}

	/**
	 * @author fg
	 * @description 给所有用户发送一条信息
	 * @date 2017年7月27日
	 */
	public static void sendMassage2All(String message) {
		SESSION_MAP.forEach((k, v) -> {
			try {
				sendMessage((Session) v, message);
			} catch (Exception e) {
				e.printStackTrace();
			}
		});
	}

	/**
	 * @author fg 给指定的session推送一条信息
	 * @description
	 * @date 2017年7月27日
	 */
	public static void sendMessage(Session session, String message) {
		session.getAsyncRemote().sendText(message);
	}

	/**
	 * @author 获取json格式所有的用户信息
	 * @description  
	 * @date 2017年7月30日
	 */
	public static String getAllUserJsonInfo() {
		JSONObject json = new JSONObject();
		JSONArray jsonArrr = JSONArray.fromObject(SESSION_MAP); 
		json.put("user", jsonArrr);
		return json.toString();
	}

}
